#include <stdio.h>
#include <sys/ipc.h>
#include <sys/types.h>
#include <sys/shm.h>
#include <errno.h>
#include <unistd.h>
#include <sys/stat.h>
#include <stdlib.h>

int main(int argc,char const* argv[])
{
    char* p;

    key_t key=ftok("./app",'a');
    if (-1==key)
    {
        perror("ftok err\n");
        return -1;
    }
    printf("%#x\n",key);

    int shmid = shmget(key,128,IPC_CREAT|IPC_EXCL|0666);
    if (-1==shmid)
    {
        if (EEXIST == errno)
        {
            shmid=shmget(key,128,0666);
        }
        else
        {
            perror("shmget err\n");
            return -1;
        }
        
    }
    printf("%d\n",shmid);
    
    p=(char*)shmat(shmid,NULL,0);
    if(p==(char*)-1)
    {
        perror("shmat err\n");
        return -1;
    }

    scanf("%s",p);
    printf("p:%s\n",p);

    while (1)
    {
        /* code */
    }
    

    shmdt(p);

    shmctl(shmid,IPC_RMID,NULL);

    return 0;
}